package com.karry.service;

import com.karry.pojo.User;
import com.karry.util.Page;
import com.karry.vo.ResultInfo;

import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;

/**
 *  用户类操作服务层接口
 * */
public interface UserService {

    /**
     *
     * @param name  用户名
     * @param pwd   用户密码
     * @return      对应用户名与密码的账户
     *
     * 主要用于登录（验证账号）
     */
    ResultInfo<User> userSearchByNameAndPwd(String name, String pwd);

    /**
     *  用户注册
     * */
    ResultInfo<User> userRegister(String userName, String userPwd, String userEmail);

    /**
     *  查询昵称是否重复
     * */
    Integer checkNick(String nick, int id);

    /**
     *  修改密码
     * */
    ResultInfo<User> updatePwd(HttpServletRequest request);

    /**
     *  修改普通信息
     * */
    ResultInfo<User> updateUser(HttpServletRequest request);

    /**
     *  修改邮箱
     * */
    ResultInfo<User> updateEmail(int id, String email);

    /**
     *  通过邮箱找回密码
     * */
    ResultInfo<Integer> updatePwd_forget(String email, String pwd);

    /**
     *  判断该账号是否存在（账号或者邮箱）
     * */
    User getUserByName(String name);

    /**
     *  修改登录信息（IP，时间）
     * */
    void updateLoginInfo(int id, String ip);

    ArrayList<User> getAllUserList();

    Page<User> getAllUserListByPage(int index);

    ResultInfo<User> deleteUser(int id, HttpServletRequest request);

    ResultInfo<User> closeUser(int id, HttpServletRequest request);

    ResultInfo<User> liveOrOpenUser(int id, HttpServletRequest request);
}
